// 强制修复学校信息管理模块脚本
// 请在学校信息管理页面的浏览器控制台中执行此脚本

console.log('=== 开始强制修复学校信息管理模块 ===');

// 1. 检查当前页面数据
function checkPageData() {
    console.log('1. 检查页面数据...');
    
    // 查找表格数据
    const tableRows = document.querySelectorAll('tbody tr');
    console.log('找到表格行数:', tableRows.length);
    
    if (tableRows.length > 0) {
        const firstRow = tableRows[0];
        const cells = firstRow.querySelectorAll('td');
        console.log('第一行单元格数:', cells.length);
        
        // 假设第一列是schoolId
        if (cells.length > 0) {
            const schoolId = cells[0].textContent.trim();
            console.log('第一行schoolId:', schoolId);
            return schoolId;
        }
    }
    
    return null;
}

// 2. 检查Vue数据
function checkVueData() {
    console.log('2. 检查Vue数据...');
    
    try {
        // 查找Vue实例
        const app = document.querySelector('#app').__vue__;
        if (app) {
            console.log('找到Vue实例');
            
            // 递归查找list数据
            function findListData(obj, path = '') {
                if (!obj || typeof obj !== 'object') return null;
                
                for (let key in obj) {
                    if (key === 'list' && Array.isArray(obj[key])) {
                        console.log('找到list数据，路径:', path + key);
                        console.log('数据长度:', obj[key].length);
                        if (obj[key].length > 0) {
                            console.log('第一条记录:', obj[key][0]);
                            return obj[key];
                        }
                    }
                    if (typeof obj[key] === 'object') {
                        const result = findListData(obj[key], path + key + '.');
                        if (result) return result;
                    }
                }
                return null;
            }
            
            const listData = findListData(app);
            return listData;
        }
    } catch (error) {
        console.log('Vue数据检查失败:', error);
    }
    
    return null;
}

// 3. 强制修复按钮事件
function forceFixButtons() {
    console.log('3. 强制修复按钮事件...');
    
    // 获取token
    const token = localStorage.getItem('access-token') || sessionStorage.getItem('access-token');
    if (!token) {
        console.error('未找到访问令牌');
        return;
    }
    
    // 查找所有编辑按钮
    const editButtons = document.querySelectorAll('button:contains("编辑"), button[title*="编辑"]');
    const deleteButtons = document.querySelectorAll('button:contains("删除"), button[title*="删除"]');
    
    console.log('找到编辑按钮:', editButtons.length);
    console.log('找到删除按钮:', deleteButtons.length);
    
    // 如果按钮选择器不工作，尝试其他方法
    if (editButtons.length === 0) {
        const allButtons = document.querySelectorAll('button');
        allButtons.forEach((btn, index) => {
            const text = btn.textContent.trim();
            if (text === '编辑') {
                console.log('找到编辑按钮:', index);
                fixEditButton(btn, token);
            } else if (text === '删除') {
                console.log('找到删除按钮:', index);
                fixDeleteButton(btn, token);
            }
        });
    } else {
        editButtons.forEach(btn => fixEditButton(btn, token));
        deleteButtons.forEach(btn => fixDeleteButton(btn, token));
    }
}

// 修复编辑按钮
function fixEditButton(button, token) {
    button.onclick = function(e) {
        e.preventDefault();
        e.stopPropagation();
        
        const row = e.target.closest('tr');
        if (row) {
            const schoolId = getSchoolIdFromRow(row);
            if (schoolId && schoolId !== 'undefined') {
                console.log('编辑学校ID:', schoolId);
                // 这里应该调用实际的编辑函数
                // 临时解决方案：显示编辑表单
                alert('编辑功能已修复，学校ID: ' + schoolId + '\n请手动实现编辑逻辑');
            } else {
                console.error('无法获取学校ID');
                alert('无法获取学校ID，请检查数据');
            }
        }
    };
}

// 修复删除按钮
function fixDeleteButton(button, token) {
    button.onclick = function(e) {
        e.preventDefault();
        e.stopPropagation();
        
        const row = e.target.closest('tr');
        if (row) {
            const schoolId = getSchoolIdFromRow(row);
            if (schoolId && schoolId !== 'undefined') {
                console.log('删除学校ID:', schoolId);
                if (confirm('确定要删除这条记录吗？')) {
                    deleteSchool(schoolId, token);
                }
            } else {
                console.error('无法获取学校ID');
                alert('无法获取学校ID，请检查数据');
            }
        }
    };
}

// 从表格行获取学校ID
function getSchoolIdFromRow(row) {
    const cells = row.querySelectorAll('td');
    if (cells.length > 0) {
        // 尝试从第一列获取（通常是ID列）
        let schoolId = cells[0].textContent.trim();
        
        // 如果第一列不是数字，尝试其他列
        if (isNaN(schoolId)) {
            for (let i = 1; i < cells.length; i++) {
                const cellText = cells[i].textContent.trim();
                if (!isNaN(cellText) && cellText !== '') {
                    schoolId = cellText;
                    break;
                }
            }
        }
        
        console.log('从行获取的学校ID:', schoolId);
        return schoolId;
    }
    return null;
}

// 删除学校
async function deleteSchool(schoolId, token) {
    try {
        console.log('正在删除学校ID:', schoolId);
        
        const response = await fetch('/admin-api/ao/school/delete?id=' + schoolId, {
            method: 'DELETE',
            headers: {
                'Authorization': 'Bearer ' + token,
                'Content-Type': 'application/json'
            }
        });
        
        if (response.ok) {
            const result = await response.json();
            console.log('删除成功:', result);
            alert('删除成功');
            location.reload();
        } else {
            console.error('删除失败:', response.status, response.statusText);
            alert('删除失败: ' + response.status);
        }
    } catch (error) {
        console.error('删除出错:', error);
        alert('删除出错: ' + error.message);
    }
}

// 4. 测试API
async function testAPI() {
    console.log('4. 测试API...');
    
    const token = localStorage.getItem('access-token') || sessionStorage.getItem('access-token');
    if (!token) {
        console.error('未找到访问令牌');
        return;
    }
    
    try {
        const response = await fetch('/admin-api/ao/school/page?pageNo=1&pageSize=10', {
            method: 'GET',
            headers: {
                'Authorization': 'Bearer ' + token,
                'Content-Type': 'application/json'
            }
        });
        
        if (response.ok) {
            const data = await response.json();
            console.log('API响应:', data);
            
            if (data.data && data.data.list) {
                console.log('学校列表:', data.data.list);
                if (data.data.list.length > 0) {
                    const firstSchool = data.data.list[0];
                    console.log('第一条学校记录:', firstSchool);
                    console.log('字段检查:');
                    console.log('  schoolId:', firstSchool.schoolId);
                    console.log('  id:', firstSchool.id);
                    console.log('  schoolName:', firstSchool.schoolName);
                }
            }
        } else {
            console.error('API请求失败:', response.status);
        }
    } catch (error) {
        console.error('API测试出错:', error);
    }
}

// 执行修复
async function executeFixe() {
    console.log('开始执行修复...');
    
    // 检查数据
    const pageData = checkPageData();
    const vueData = checkVueData();
    
    // 测试API
    await testAPI();
    
    // 修复按钮
    forceFixButtons();
    
    console.log('=== 修复完成 ===');
    console.log('如果仍然有问题，请检查：');
    console.log('1. 浏览器缓存是否已清除');
    console.log('2. 数据库中是否有学校数据');
    console.log('3. 用户是否有相应权限');
}

// 添加CSS选择器扩展（用于查找包含特定文本的按钮）
if (!document.querySelector.toString().includes('contains')) {
    // 简单的contains实现
    window.findButtonsByText = function(text) {
        const buttons = document.querySelectorAll('button');
        return Array.from(buttons).filter(btn => btn.textContent.trim() === text);
    };
}

// 立即执行
executeFixe();

console.log('=== 强制修复脚本已执行 ===');
console.log('请检查控制台输出，然后测试编辑和删除功能');
